首页
首页

python 定义函数来实现输出kunbernetes yaml配置文件

接着上一篇的文章kubernets的yaml文件分析详解

我用python定义了一个函数,之后在django传参数给这个函数就可以自动生成yaml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# coding:utf-8
import copy
import os
from yaml import load, dump
rc_path = './base-rc.yaml'

# 读取yaml文件内容并返回json
def read_yaml(path):
f = open(path)
json_value = load(f)
f.close()
# print x
return json_value
def create_yaml(kind='ReplicationController',apiVersion='v1',namespace='default',rc_name='ssss',pod_name='bbbb',pod_version='aaaa',replicas=1,containes_counts=1,containes={'containes_name0': 'whpt','port0':8088},status='pro'):
json_content = read_yaml(rc_path)
json_content['kind'] = kind
json_content['apiVersion'] = apiVersion
json_content['metadata']['namespace'] = namespace
json_content['metadata']['name'] = rc_name
json_content['metadata']['labels']['app'] = pod_name
json_content['metadata']['labels']['version'] = pod_version
json_content['spec']['replicas'] = replicas
i = 0 # 循环写入容器信息
while i < containes_counts:
# 容器名
json_content['spec']['template']['spec']['containers'][i]['name'] = containes['containes_name'+str(i)]
# 容器image地址
json_content['spec']['template']['spec']['containers'][i]['image'] = status + '.zhizhebuyan.com/' + containes['containes_name'+str(i)] +':'+ pod_version
# 容器 rsyncd地址
json_content['spec']['template']['spec']['containers'][i]['env'][0]['value'] = status + '.zhizhebuyan.com'
# 容器rsyncd同步目录 具体标准为 项目名(pod名)/容器名/版本号/*
json_content['spec']['template']['spec']['containers'][i]['env'][1]['value'] = pod_name+'/'+containes['containes_name'+str(i)] +'/'+pod_version+'/*'
# 容器对外提供端口 暂时支持每个容器对外提供一个端口
json_content['spec']['template']['spec']['containers'][i]['ports'][0]['containerPort'] =containes['port'+str(i)]
i += 1

yaml_content = dump(json_content,default_flow_style=False)
return yaml_content

if __name__ == '__main__':
print create_yaml(kind='ReplicationController',apiVersion='v1',namespace='1231230',rc_name='Dzer0',pod_name='pod_name',pod_version='pod_version',replicas=1)

以上内容中 容器 rsyncd地址 容器rsyncd同步目录 为我容器内部自定义的参数,大家可以忽视即可

支持一下
扫一扫,我会更有动力更新
  • 微信扫一扫
  • 支付宝扫一扫